#ifndef SESSIONCLIENTSURSERVEUR_H
#define SESSIONCLIENTSURSERVEUR_H

#include <errno.h>

#include "netUtil.h"
#include "Base.h"
#include "SessionClientSurServeur.h"
#include "Serveur.h"

#include <map>

class SessionClientSurServeur;

typedef map<string,SessionClientSurServeur*>::iterator Iterateur;
class SessionClientSurServeur : public Base
{
private:
    GereClient client;
    bool connecte; // Vrai si le client est connecté au serveur avec un login valide. Faux sinon.
    string login;
    int typeClient; // Indique le type du client. exemple: ETUDIANT.
    string dansSalle; // idSalle de la salle ou est connecte le client. (idSalle == "" si dans aucune salle).
    bool createurDeLaSalle; // Vrai si ce client ouvre une salle.   (OBSERVATEUR UNIQUEMENT)
    string dansActivite; // idSalle de l'activite ou est connecte le client. (idActivite == "" si dans aucune activite).  (ETUDIANT UNIQUEMENT)
    list<QuestionQCM> qcm;
    bool assist;
    SessionClientSurServeur* assistant_te;

public:
    SessionClientSurServeur(const GereClient &client);
    void setAssist(bool what);
    bool getAssist();
    void setAssist_t(SessionClientSurServeur *session);
    SessionClientSurServeur* getAssist_t();
    void gere();
    int getTypeClient();
    string getDansSalle();
    string getDansActivite();
};

#endif // SESSIONCLIENTSURSERVEUR_H
